package db

import (
	"gitee.com/love_bass/go-utils/utils"
	"go-base/configs"
	"gorm.io/driver/sqlite"
	"gorm.io/gorm"
	"gorm.io/gorm/logger"
	"log"
	"os"
	"path/filepath"
	"time"
)

func initSQLite() {
	// 定义日志打印
	var newLogger logger.Interface = nil
	if configs.Data.Main.PrintSql {
		newLogger = logger.New(
			log.New(os.Stdout, "\r\n", log.LstdFlags), // io writer（日志输出到标准输出）
			logger.Config{
				SlowThreshold:             time.Second, // 慢 SQL 阈值
				LogLevel:                  logger.Info, // 日志级别
				IgnoreRecordNotFoundError: true,        // 忽略ErrRecordNotFound错误
				Colorful:                  true,        // 禁用/启用彩色打印
			},
		)
	}
	var err error
	dbFile := filepath.Join(utils.LocalDir, "data.db")
	// 打开数据库
	Context, err = gorm.Open(sqlite.Open(dbFile), &gorm.Config{
		Logger: newLogger,
	})
	if err != nil {
		log.Printf("数据库连接失败：%v", err)
		os.Exit(1)
	}

	// 迁移数据结构
	if err := migrate(); err != nil {
		log.Printf("数据迁移失败：%v", err)
		os.Exit(1)
	}
	log.Printf("数据库迁移成功")
	log.Printf("导入初始化Mock数据...")
	log.Printf("数据库初始化完毕...")
}
